package com.duoec.doc.dto.response;

import com.duoec.doc.dto.enums.GenderEnum;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author xuwenzhen
 */
public class UserDto implements Serializable {
    private Long id;

    private String name;

    private Role role;

    private List<Article<Vr>> vrs;

    private Double score;

    private BigDecimal money;

    /**
     * 体重，单位：kg
     */
    private Float weight;

    /**
     * 姓氏首字符
     *
     * @demo X
     */
    private Character familyNameFirstLetter;

    /**
     * 性别
     *
     * @demo MAN
     */
    private GenderEnum gender;

    /**
     * 家庭成员性别
     */
    private List<GenderEnum> familyGenders;

    /**
     * 创建时间
     *
     * @demo 2020-02-07 12:00:00
     */
    private LocalDateTime createTime;

    /**
     * 生日
     *
     * @demo 2020-02-07
     */
    private LocalDate birthday;

    /**
     * 时间戳，粒度：毫秒
     *
     * @demo 1581014400000
     */
    private Long updateTime;

    /**
     * 注册时间
     */
    private Date registryDate;

    /**
     * 用户扩展信息
     */
    private Map<String, Serializable> extraData;

    /**
     * 用户扩展信息2
     */
    private Map<String, BaseKeyValue> extraData2;

    /**
     * 好友列表
     */
    private List<UserDto> friends;

    /**
     * 最好的朋友
     */
    private UserDto bestFriend;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    public List<Article<Vr>> getVrs() {
        return vrs;
    }

    public void setVrs(List<Article<Vr>> vrs) {
        this.vrs = vrs;
    }

    public Double getScore() {
        return score;
    }

    public void setScore(Double score) {
        this.score = score;
    }

    public BigDecimal getMoney() {
        return money;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    public Float getWeight() {
        return weight;
    }

    public void setWeight(Float weight) {
        this.weight = weight;
    }

    public Character getFamilyNameFirstLetter() {
        return familyNameFirstLetter;
    }

    public void setFamilyNameFirstLetter(Character familyNameFirstLetter) {
        this.familyNameFirstLetter = familyNameFirstLetter;
    }

    public GenderEnum getGender() {
        return gender;
    }

    public void setGender(GenderEnum gender) {
        this.gender = gender;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public LocalDate getBirthday() {
        return birthday;
    }

    public void setBirthday(LocalDate birthday) {
        this.birthday = birthday;
    }

    public Long getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Long updateTime) {
        this.updateTime = updateTime;
    }

    public Date getRegistryDate() {
        return registryDate;
    }

    public void setRegistryDate(Date registryDate) {
        this.registryDate = registryDate;
    }

    public List<GenderEnum> getFamilyGenders() {
        return familyGenders;
    }

    public void setFamilyGenders(List<GenderEnum> familyGenders) {
        this.familyGenders = familyGenders;
    }

    public Map<String, Serializable> getExtraData() {
        return extraData;
    }

    public void setExtraData(Map<String, Serializable> extraData) {
        this.extraData = extraData;
    }

    public Map<String, BaseKeyValue> getExtraData2() {
        return extraData2;
    }

    public void setExtraData2(Map<String, BaseKeyValue> extraData2) {
        this.extraData2 = extraData2;
    }

    public List<UserDto> getFriends() {
        return friends;
    }

    public void setFriends(List<UserDto> friends) {
        this.friends = friends;
    }

    public UserDto getBestFriend() {
        return bestFriend;
    }

    public void setBestFriend(UserDto bestFriend) {
        this.bestFriend = bestFriend;
    }
}
